home *** CD-ROM | disk | FTP | other *** search
- #!/usr/bin/perl -w
- # This file was preprocessed, do not edit!
-
-
- use strict;
- use Getopt::Long;
- use Debconf::Log qw{:all};
- use Debconf::Db;
- use Debconf::DbDriver;
- use Debconf::DbDriver::Backup;
-
-
- sub usage {
- print STDERR <<EOF;
- Usage: debconf-copydb sourcedb destdb [--pattern=pattern] [--owner-pattern=pattern] [--config=Foo:bar]
- EOF
- exit(1);
- }
-
-
- my $pattern='.*';
- my $owner_pattern;
-
- my %config;
- sub config {
- my ($field, $value)=split(/\s*:\s*/, $_[1], 2);
- $field=~tr/-/_/;
- $field=lc($field);
- die "Parse error: \"$_[1]\"" unless defined $field and length $field;
-
- if ($field eq 'name') {
- if ($config{name}) {
- Debconf::Db->makedriver(%config);
- }
- elsif (%config) {
- warn "ignoring command line config data before $_[1]";
- }
- %config=();
- }
-
- $config{$field}=$value;
- }
-
- GetOptions(
- "pattern|p=s" => \$pattern,
- "config|c=s" => \&config,
- "owner-pattern=s" => \$owner_pattern,
- ) || usage();
- Debconf::Db->makedriver(%config) if %config;
-
- my $srcname=shift || usage();
- my $destname=shift || usage();
-
- Debconf::Db->load;
-
- my $src=Debconf::DbDriver->driver($srcname);
- die "$0: source database, \"$srcname\" does not exist\n" unless ref $src;
- my $dest=Debconf::DbDriver->driver($destname);
- die "$0: destination database, \"$destname\" does not exist\n" unless ref $dest;
-
- my $copier=Debconf::DbDriver::Backup->new(
- db => $src, backupdb => $dest, name => 'copier');
-
- my $i=$copier->iterator;
- while (my $item=$i->iterate) {
- next unless $item =~ /$pattern/;
-
- if (defined $owner_pattern) {
- my $fit_owner = 0;
- my $owner;
- foreach $owner ($src->owners($item)){
- $fit_owner = 1 if $owner =~ /$owner_pattern/;
- }
- next unless $fit_owner;
- }
-
- $copier->copy($item, $src, $dest);
- }
-
- $copier->shutdown;
-
-
-